Technical Q&A JAVA29
Creating Mac OS X applications from Java JAR files

Q: É_ÉuÉãÉNÉäÉbÉNÇ≈ãNìÆÇ≈Ç´ÇÈ Java ÉAÉvÉäÉPÅ[ÉVÉáÉìÇçÏê¨Ç∑ÇÈÇ…ÇÕǫǧÇ∑ÇÍnjǢǢÇ≈Ç∑Ç©ÅH

A: MRJAppBuilder ÇégópÇ∑ÇÈÇΔÅAJava JAR ÉtÉ@ÉCÉãÇ©ÇÁÉAÉvÉäÉPÅ[ÉVÉáÉìÉoÉìÉhÉãå`éÆÇÃÉAÉvÉäÉPÅ[ÉVÉáÉìÇÉrÉãÉhÇ∑ÇÈDZÇΔÇ™Ç≈Ç´Ç‹Ç∑ÅBÉAÉvÉäÉPÅ[ÉVÉáÉìÇÉrÉãÉhÇ∑ÇÈÇΩÇflÇ…ÇÕÅA(è≠Ç»Ç≠ÇΔLJ) ÉÅÉCÉìÉNÉâÉXñºÅAÉNÉâÉXÉpÉXÅAÇ®ÇÊÇ—èoóÕÉtÉ@ÉCÉãÇÃï€ë∂èÍèäÇéwíËÇ∑ÇÈïKóvǙdžÇËÇ‹Ç∑ÅBDZÇÍÇÁÇÃílÇÕǪÇÍǺÇÍÅAÅuApplicationÅvÉpÉlÉãÇ©ÇÁê›íËÇ≈Ç´Ç‹Ç∑

Build Java Application

ÉÅÉCÉìÉNÉâÉXÉtÉBÅ[ÉãÉhÇÕÅAÉÅÉCÉìÉNÉâÉXÇÃñºëOÇì¸óÕÇ∑ÇÈÉeÉLÉXÉgÉtÉBÅ[ÉãÉhÇ≈Ç∑ÅBDZÇÃÉtÉBÅ[ÉãÉhÇÕÅAcom.apple.mrj.application.main ÉvÉçÉpÉeÉBÇÃílÇï\ǵNjÇ∑ÅBcom.foo.myclass ǻǫÇÃîCà”ÇÃÉpÉbÉPÅ[ÉWèÓïÒÇä‹ÇflÇÈDZÇΔÇñYÇÍǻǢÇ≈Ç≠ÇæÇ≥Ç¢ÅB

ÉNÉâÉXÉpÉXLJÅAÉNÉâÉXÉpÉXÇì¸óÕÇ∑ÇÈÉeÉLÉXÉgÉtÉBÅ[ÉãÉhÇ≈Ç∑ÅBDZÇÃÉtÉBÅ[ÉãÉhÇÕÅAcom.apple.mrj.application.classpath ÉvÉçÉpÉeÉBÇÃílÇï\ǵNjÇ∑ÅBéüÇÃó·Çà MyJarFile.jar ÇΔ MoreClasses.jar ÇÕÅAÉAÉvÉäÉPÅ[ÉVÉáÉìÇΔìØÇ∂ÉfÉBÉåÉNÉgÉäì‡Ç…èÌíìǵNjÇ∑ÅBÉNÉâÉXÉpÉXÇÃóvëfÇÕÅAÉAÉvÉäÉPÅ[ÉVÉáÉìÇÃêeÉtÉHÉãÉ_Ç≈ÇÕÇ»Ç≠ÅAÉAÉvÉäÉPÅ[ÉVÉáÉìÇÃÉtÉHÉãÉ_ÇäÓèÄDžǵǃëäëŒìIÇ…éwíËÇ≥ÇÍÇÈÇΩÇflÅAÅu../ÅvÇ™ïKóvÇ≈Ç∑ÅB

../MyJarFile.jar:../MoreClasses.jar

ç≈å„Ç…ïKóvÇ»ÉtÉBÅ[ÉãÉhÇÕèoóÕÉtÉ@ÉCÉãÉtÉBÅ[ÉãÉhÇ≈Ç∑ÅBDZÇÃÉtÉBÅ[ÉãÉhÇ…ÇÕÅAèoóÕÉtÉ@ÉCÉãÇÃñºëOÇΔï€ë∂èÍèäÇéwíËÇ∑ÇÈïKóvǙdžÇËÇ‹Ç∑ÅBópà”Ç≥ÇÍǃǢÇÈÉeÉLÉXÉgÉtÉBÅ[ÉãÉhÇ…ÉpÉXÇíºê⁄ì¸óÕǵǃLJǩNjǢNjÇπÇÒÇ™ÅAÅuSet...ÅvÉ{É^ÉìÇëIëǵÅAÉtÉ@ÉCÉãëIëÉ_ÉCÉAÉçÉOÇégǡǃÅAèoóÕÉtÉ@ÉCÉãÇÃï€ë∂èÍèäÇê›íËÇ∑ÇÈDZÇΔLJÇ≈Ç´Ç‹Ç∑ÅB

ëºÇÃÉpÉlÉãÇÃégópÇÕÉIÉvÉVÉáÉìÇ≈Ç∑ÅBÅuMac OS XÅvÉpÉlÉãÇégópÇ∑ÇÈÇΔÅAMac OS X ÇÃÉAÉvÉäÉPÅ[ÉVÉáÉìÉoÉìÉhÉãå`éÆÇ…å≈óLÇÃílÇê›íËÇ≈Ç´Ç‹Ç∑ÅBCFBundleExecutable Ç‹ÇΩÇÕ CFBundleName ÇéwíËǵǻǢÇΔÅADZÇÍÇÁÇÃñºëOÇÕëIëǵÇΩèoóÕÉtÉ@ÉCÉãÇÃñºëOÇ…äÓÇ√Ǣǃê›íËÇ≥ÇÍÇ‹Ç∑ÅB

ÅuJava PropertiesÅvÉpÉlÉãÇ≈ÇÕÅAJava ÇÃÉâÉìÉ^ÉCÉÄÉvÉçÉpÉeÉBÇê›íËÇ≈Ç´Ç‹Ç∑ÅBÅumainÅvÇ®ÇÊÇ—ÅuclasspathÅvÉtÉBÅ[ÉãÉhÇÕï“èWÇ≈Ç´Ç‹ÇπÇÒÅBDZÇÍÇÁÇÃÉvÉçÉpÉeÉBÇÕÅuApplicationÅvÉpÉlÉãÇ≈ÇÃÇ›ê›íËÇ≈Ç´Ç‹Ç∑ÅBécÇËÇÃÉvÉçÉpÉeÉBÇΔǪÇÃÉfÉtÉHÉãÉgílÇÕÅAMac OS è„Çà Java Ç…ÇÊǡǃÉTÉ|Å[ÉgÇ≥ÇÍÇÈïWèÄÉvÉçÉpÉeÉBÇ≈Ç∑ÅBÉeÅ[ÉuÉãÇ…ÉäÉXÉgÇ≥ÇÍǃǢǻǢǪÇÃëºÇÃÉvÉçÉpÉeÉBÇê›íËÇ∑ÇÈÇΔÇ´ÇÕÅAíPèÉDžǪÇÍÇÁÇÃÉvÉçÉpÉeÉBÇÉäÉXÉgÇÃññîˆÇ…í«â¡ÇµÇ‹Ç∑ÅBMRJAppBuilder ÇÃà»ëOÇÃÉoÅ[ÉWÉáÉìÇ≈ÇÕÅAJava ÇÃÉâÉìÉ^ÉCÉÄÉvÉçÉpÉeÉBÇíËã`Ç∑ÇÈç\ê¨ÉtÉ@ÉCÉãÇçÏê¨Ç∑ÇÈïKóvǙdžÇËNjǵÇΩÅBDZÇÃÉpÉlÉãÇÕÅADZÇÃç\ê¨ÉtÉ@ÉCÉãÇÃë„ÇÌÇËÇ…Ç»ÇËÇ‹Ç∑ÅB

ÅuMerge FilesÅvÉpÉlÉãÇ…ÇÕÅA.zip Ç‹ÇΩÇÕ .jar ÉtÉ@ÉCÉãÇÉAÉvÉäÉPÅ[ÉVÉáÉìÇ…í«â¡Ç∑ÇÈÇΩÇflÇÃéËíiÇ™ópà”Ç≥ÇÍǃǢNjÇ∑ÅBÅuAdd...ÅvÉ{É^ÉìÇëIëǵǃÅAñ⁄ìIÇÃÉtÉ@ÉCÉãÇÉäÉXÉgÇ…í«â¡ÇµÇ‹Ç∑ÅBÉ}Å[ÉWÉäÉXÉgÇ…í«â¡Ç≥ÇÍÇΩäeçÄñ⁄ÇÕÅAÉAÉvÉäÉPÅ[ÉVÉáÉìÇà Contents/Resources/Java/ ÉfÉBÉåÉNÉgÉäÇ…ÉRÉsÅ[Ç≥ÇÍÇ‹Ç∑ÅBÉ}Å[ÉWÉäÉXÉgÇ…çÄñ⁄Çí«â¡ÇµÇΩèÍçáÇÕÅAǪÇÍǺÇÍÇÃëŒâûÇ∑ÇÈóvëfÇÉNÉâÉXÉpÉXDžLJí«â¡Ç∑ÇÈïKóvǙdžÇËÇ‹Ç∑ÅBåªç›ÇÃÉoÅ[ÉWÉáÉìÇ≈ÇÕÅAÉAÉvÉäÉPÅ[ÉVÉáÉìÇÃÉ}Å[ÉWÇ≥ÇÍÇΩçÄñ⁄ÇÕé©ìÆìIÇ…ÉNÉâÉXÉpÉXÇ…í«â¡Ç≥ÇÍÇ‹ÇπÇÒÅBÇΩÇΔǶnjÅAÅuMerge FilesÅvÉpÉlÉãÇégópǵǃ MyJarFile.jar ÉtÉ@ÉCÉãÇí«â¡ÇµÇΩèÍçáÇÕÅAëOèqÇÃÉNÉâÉXÉpÉXÇéüÇÃÇÊǧDžïœçXÇ∑ÇÈïKóvǙdžÇËÇ‹Ç∑ÅB

Contents/Resources/Java/MyJarFile.jar:../MoreClasses.jar

ÉCÉÅÅ[ÉWǻǫÇÃÉAÉvÉäÉPÅ[ÉVÉáÉìÇÃÉäÉ\Å[ÉXÇ‚ Java ÉAÉvÉäÉPÅ[ÉVÉáÉìÇÃÉfÉBÉåÉNÉgÉäÇ…ï€ë∂Ç≥ÇÍǃǢÇÈDZÇΔÇ™ä˙ë“Ç≥ÇÍÇÈǪÇÃëºÇÃÉtÉ@ÉCÉãÇÕÅAÉAÉvÉäÉPÅ[ÉVÉáÉìÉoÉìÉhÉãÇΔìØÇ∂ÉtÉHÉãÉ_ì‡Ç…ï€ë∂Ç≥ÇÍÇƒÇ¢Ç»ÇØÇÍnjǻÇËÇ‹ÇπÇÒÅB

íçà”:
Project Builder Çégǡǃ Java É\Å[ÉXÇ©ÇÁÉAÉvÉäÉPÅ[ÉVÉáÉìÇÉrÉãÉhǵǃǢÇÈèÍçáÇÕÅAÉ_ÉuÉãÉNÉäÉbÉNÇ≈ãNìÆâ¬î\Ç»ÉAÉvÉäÉPÅ[ÉVÉáÉìÇ™é©ìÆìIÇ…çÏê¨Ç≥ÇÍÇ‹Ç∑ÅBDZÇÃèÍçáÅAMRJAppBuilder ÇégópÇ∑ÇÈïKóvÇÕdžÇËÇ‹ÇπÇÒÅB

åxçê:
èoóÕÉtÉ@ÉCÉãÇ™Ç∑Ç≈Ç…ë∂ç›ÇµÇƒÇ¢ÇƒÇ‡ÅAMRJAppBuilder ÇÕåxçêÇèoǵNjÇπÇÒÅBDZÇÃèÍçáÅAä˘ë∂ÇÃÉAÉvÉäÉPÅ[ÉVÉáÉìÇÕè„èëÇ´Ç≥ÇÍÅAêVǵǢÉRÉsÅ[Ç…íuÇ´ä∑ǶÇÁÇÍÇ‹Ç∑

çXêVì˙ÅF2000 îN 12 åé 21 ì˙